<?php

class ExtendededitarticlePage extends EditarticlePage {
	
	
	function ExtendededitarticlePage($name = null) {
		parent::EditArticlePage('ExtendededitarticlePage');
	}

	function leavePage()
	{
		parent::leavePage();
	}
	
	public function serveRequest() {
		
		return parent::serveRequest();
		
	}
	
	/**
	 * Itt lehet az enterPage handler-ben lefutó "article" form-típus definíció extra elemeit megadni.
	 * Felül kell definiálni ezt a metódust, ennyi.
	 *
	 */
	public function defineAdditionalFormElements()
	{
		if ($this->articleObj->type == ARTICLE_TYPE_NORMAL) {
			FormUtil::addFormElement("article", new FormElementInfo("automenu", "checkbox", null));
		} else if ($this->articleObj->type == ARTICLE_TYPE_NEWS) {
			
		}
	}

	protected function getListPageLink($parseArray)
	{
		if ($this->articleObj->type == ARTICLE_TYPE_NORMAL)
			return HydraLinkProvider::getLink('link_articles', $parseArray);			
		else if ($this->articleObj->type == ARTICLE_TYPE_NEWS)
			return HydraLinkProvider::getLink('link_news', $parseArray);			
	}

	public function transformDBObjectToFormValuesObject($articleRecord)
	{
		$formValues = parent::transformDBObjectToFormValuesObject($articleRecord);
		
		
		if(!empty($articleRecord['attributes']))
		$attributes = unserialize($articleRecord['attributes']);
		else
		$attributes = array();

		if($this->articleObj->type == ARTICLE_TYPE_NORMAL)
		{
			$formValues['automenu'] = FunctionLibrary::getArrayValue($attributes, ExtendedArticle::ATTR_AUTOMENU, false);
		} 
		else if ($this->articleObj->type == ARTICLE_TYPE_NEWS)
		{
						
		}
			
		return $formValues;
	}

	public function transformFormValuesToDBObject($formValues)
	{
		$articleRecord = parent::transformFormValuesToDBObject($formValues);
			
		if(!empty($articleRecord['attributes']))
		$attributes = unserialize($articleRecord['attributes']);
		else
		$attributes = array();
			
		if($this->articleObj->type == ARTICLE_TYPE_NORMAL)
		{
			if($formValues['automenu'] === true)
			$attributes[ExtendedArticle::ATTR_AUTOMENU] = true;
			else
			$attributes[ExtendedArticle::ATTR_AUTOMENU] = false;
		}
		else if ($this->articleObj->type == ARTICLE_TYPE_NEWS)
		{
			
		}

		if(count($attributes) > 0)
		$articleRecord['attributes'] = serialize($attributes);
		else
		$articleRecord['attributes'] = null;
			
		return $articleRecord;
	}

	/**
	 * Mentés előtt a form értékek ellenőrzése.
	 *
	 * @param array $formValues a form értékek
	 * @return array null ha mehet tovább, hiba üzenetek tömbje ha ne
	 */
	public function checkFormObjValues($formValues)
	{
		$errors = parent::checkFormObjValues($formValues);
		if(is_null($errors))
		$errors = array();

		if(empty($errors))
		return null;

		return $errors;
	}

	/**
	 * Ezzel a függvénnyel lehet hozzáadni a szerkesztésre nyitott form részéhez
	 * olyan mezőket, amik a custom attribútumok szerkesztéséhez kellenek.
	 *
	 * Ez praktikus, mert sokszor csak egy-egy textfield-ről vagy combo-box-ról lesz szó,
	 * és azért felesleges az egész szerkesztő template-et lecserélni. De persze azt is lehet... :-)
	 *
	 * FONTOS! Arra figyelj, hogy ilyenkor egy table.form-ban vagy! Amit hozzá tudsz adni,
	 * azok újabb sorok ehhez a táblához (<tr>), és a sorokban két oszlop van: .field és .value!
	 *
	 * @param array $formObj az admin objektum
	 * @return string
	 */
	public function getAttributesEditingHtml($formObj)
	{
		// használjuk a browser komponenst, úgyhogy hívjuk be!
		AdminBase::includeBrowser();

		AdminBase::addJavascript("js/enhancements.js");

		$tpl = BaseAdminPage::loadTemplateFile("editarticle_addition.tpl.html");
			
		TextHandler::insertTextsIntoTemplate($tpl, null, "ear_");
		FormUtil::insertFormValuesToTemplate("article", $tpl, "saved");

		if ($this->articleObj->type == ARTICLE_TYPE_NORMAL) {
			$tpl->setVariable('app_root_url', APP_ROOT_URL);			
		
		} else if ($this->articleObj->type == ARTICLE_TYPE_NEWS) {
			$tpl->setVariable('app_root_url', APP_ROOT_URL);
			
			$tpl->replaceBlock('automenu', '', false);
			$tpl->touchBlock('automenu');
		} else {
			$tpl->replaceBlock('automenu', '', false);
			$tpl->touchBlock('automenu');
		}
			
		return $tpl->get();
	}

}

?>